package com.fly.office.example;

import com.fly.office.constant.ChartEnum;
import com.fly.office.word.model.ChartModel;
import com.fly.office.word.tool.WordTool;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 柱状图测试案例
 * @author lf
 */
public class ColumnarChart {

    public static void main(String[] args) {
        //生成单柱状图表
        createSingleColumnar();

        //生成多柱状图表
        createMultiColumnar();
    }

    private static void createSingleColumnar()
    {
        ChartModel model = initSingleColumnarModel();
        model.setTplPath("/word/columnar.docx");
        model.setOutPath("D:\\data\\word\\columnar_single.docx");

        WordTool.generate(model);
    }

    /**
     * 创建多柱状图
     */
    private static void createMultiColumnar()
    {
        ChartModel model = initMultiColumnarModel();
        model.setTplPath("/word/columnar.docx");
        model.setOutPath("D:\\data\\word\\columnar_multi.docx");

        WordTool.generate(model);
    }

    /**
     * 初始化单柱状图数据模型
     * @return
     */
    public static ChartModel initSingleColumnarModel()
    {
        ChartModel model = new ChartModel();
        //图表模型
        model.setChartModel(ChartEnum.CHART_COLUMNAR);
        //图表标识KEY
        model.setKey("columnar");
        //图表名称
        model.setChartName("单柱状图");

        // 标题
        List<String> titleArr = new ArrayList<String>();
        titleArr.add("");
        titleArr.add("人口");
        model.setTitles(titleArr);

        // 字段名(数据有多少列，就多少个)
        List<String> fldNameArr = new ArrayList<String>();
        fldNameArr.add("item1");
        fldNameArr.add("item2");
        model.setFields(fldNameArr);

        // 数据集合
        List<Map<String, String>> dataList = new ArrayList<Map<String, String>>();

        // 第一行数据
        Map<String, String> base1 = new HashMap<String, String>();
        base1.put("item1", "2020-01");
        base1.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");

        // 第二行数据
        Map<String, String> base2 = new HashMap<String, String>();
        base2.put("item1", "2020-02");
        base2.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");

        // 第三行数据
        Map<String, String> base3 = new HashMap<String, String>();
        base3.put("item1", "2020-03");
        base3.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");

        dataList.add(base1);
        dataList.add(base2);
        dataList.add(base3);
        model.setDataList(dataList);

        return model;
    }


    /**
     * 初始化多柱状图数据模型
     * @return
     */
    public static ChartModel initMultiColumnarModel()
    {
        ChartModel model = new ChartModel();
        //图表模型
        model.setChartModel(ChartEnum.CHART_COLUMNAR);
        //图表标识KEY
        model.setKey("columnar");
        //图表名称
        model.setChartName("资产分析");

        //标题列表
        List<String> titles=new ArrayList<>();
        titles.add("");
        titles.add("存款");
        titles.add("欠款");
        titles.add("还款");
        model.setTitles(titles);

        //字段名列表
        List<String> fields = new ArrayList<>();
        fields.add("item1");
        fields.add("item2");
        fields.add("item3");
        fields.add("item4");
        model.setFields(fields);

        // 数据集合
        List<Map<String, String>> dataList = new ArrayList<Map<String, String>>();

        // 第一行数据
        Map<String, String> base1 = new HashMap<String, String>();
        base1.put("item1", "2020-05");
        base1.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        base1.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        base1.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        dataList.add(base1);

        // 第二行数据
        Map<String, String> base2 = new HashMap<String, String>();
        base2.put("item1", "2020-06");
        base2.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        base2.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        base2.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        dataList.add(base2);

        // 第三行数据
        Map<String, String> base3 = new HashMap<String, String>();
        base3.put("item1", "2020-07");
        base3.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        base3.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        base3.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
        dataList.add(base3);

        model.setDataList(dataList);

        return model;
    }

}
